package movilmax.sia_corp.action;

import java.io.File;
import java.util.Map;
import movilmax.sia_corp.model.Usuario;
import org.apache.commons.io.FileUtils;
import utilidades.Cadena;
import apli.conectar.Conectar;
import basedatos.Fecha;
import basedatos.Resultado;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class RegistroPropuesta extends ActionSupport{
	private static final long serialVersionUID = 3296430298612851473L;
	private Conectar BASE;
    private String obs;
    private String cod_prospecto;
    private String destinatario;
    private String mensaje;
    private String cod_propuesta;

    private String status;
    private String fecha;
    private String obs_status;
    
	private File archivo;
	private String archivoContentType;
	private String archivoFileName;
	
	private String enlace_pro;
	
	public void validate(){	
		try{
			if ( this.getCod_prospecto().length() == 0 ){	
				this.addActionError("Debe cargar el prospecto" );
				return;
			}
			if ( this.getDestinatario().length() == 0 ){	
					this.addActionError( "Debe ingresar los destinatarios" );
					return;
			}
		    if ( this.getMensaje().length() == 0 ){	
					this.addActionError( "Debe ingresar el mensaje" );
					return;
			}
		    /*if ( this.getObs().length() == 0 ){	
				this.addActionError( "Debe ingresar las observaciones" );
				return;
			}
		    */
			if(this.archivo!=null){
				if ( this.getArchivoFileName().length() == 0 ){	
					this.addActionError( "Debe seleccionar el archivo con la propuesta que desea enviar" );
					return;
				}
				if(!this.getArchivoContentType().trim().equals("application/pdf")){
					 this.addActionError("El tipo de archivo :"+ this.getArchivoContentType() +" no es valido, solo se permiten archivo PDF" );
			    	 return;
		    	}
			}else{
				  this.addActionError( "Debe seleccionar el archivo con la propuesta que desea enviar" );
				  return;
			}
		}catch(Exception err){
			//this.addActionMessage( "Error"+err.toString() );	
		}
	}

	
	@SuppressWarnings("rawtypes")
	public String guardar_propuesta() throws Exception {
		Map session = ActionContext.getContext().getSession();
	    Usuario USUARIO = (Usuario)session.get("ses_usuario");
	    if (USUARIO!=null){
	    	if(this.archivo==null){
	    		addActionError("Archivo no es valido" );
		        return ERROR;
	    	}	
		    if(!this.getArchivoContentType().equals("application/pdf")){
		        addActionError("El tipo de archivo :"+ this.getArchivoContentType() +" no es valido, solo se permiten archivo PDF" );
			    return ERROR;
		    }
	    	
	    	BASE= new Conectar();
	    	if(BASE.getMsg().equals("SI")){	
	    		try{
	    			Fecha F=new Fecha();
	    			String FECHA=F.getFecha();
	    			String HORA=F.getHoras();
	    			String adjuntos="";
	    			String SQL="";
	    			if(this.getObs()==null){
	    				this.setObs("ENVIADO A: "+this.getDestinatario());
	    			}
	    			if ( this.getObs().length() == 0 ){	
	    				this.setObs("ENVIADO A: "+this.getDestinatario());
	    			}
	    			try {
	    				StringBuilder sb = new StringBuilder();
	    				sb.append("/home/corporativo/prospectos/"+this.getCod_prospecto()+"/" );
	    				sb.append("propuesta.pdf" );
	    				File theFile = new File(sb.toString());
	    				FileUtils.copyFile( this.getArchivo() , theFile);
	    				adjuntos="/home/corporativo/prospectos/"+this.getCod_prospecto()+"/propuesta.pdf" ;
	    				String CODIGO_PRO="";
	    				if (this.getCod_propuesta().equals("-1") ){
	    					CODIGO_PRO=BASE.getBaseDatos().generarCodigo("corp_propuesta","codigo");
	    					SQL="INSERT INTO corp_propuesta (propuesta,codigo,prospecto,obs,usuario,fecha,hora,status,fecha_status,hora_status,usuario_status) VALUES(?,'"+CODIGO_PRO +"','"+ this.getCod_prospecto() +"','"+ this.getObs() + "','"+ USUARIO.getUsuario()+"','"+ FECHA +"','"+HORA+"','REGISTRADO','"+ FECHA +"','"+HORA+"','"+USUARIO.getUsuario()+"' )";
	    				}else{
	    					CODIGO_PRO=this.getCod_propuesta();
	    					SQL="UPDATE corp_propuesta set propuesta=?,obs='"+ this.getObs() +"',status='ACTUALIZADO',usuario_status='"+ USUARIO.getUsuario() +"',fecha_status='"+FECHA+"',hora_status='"+HORA+"'  where codigo='"+ CODIGO_PRO + "' ";
	    				}
	    				BASE.getBaseDatos().guardarArchivo(adjuntos, SQL);
	    			}catch (Exception e){
	    				addActionError("Error al intentar cargar el archivo :"+ e.getMessage().toString()  );
	  		    	    return ERROR;
	    			}
	    			Cadena C=new Cadena();
	    			String STR_MSG=C.truncarCad(this.getMensaje(),"Saludos Cordiales/Cordiales Saludos/Mensaje reenviado/Saludos/Atentamente");
	    			String mensaje="<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />"+
	    					"<style type='text/css'>"+
	    					".fuente {"+
	    						"font-family: Arial, Helvetica, sans-serif;"+
	    						"font-size: 13px;"+
	    					"}.fuente.tama {"+
	    						"font-size: 10px;"+
	    					"}"+
	    					".titulo {"+
	    						"font-family: Verdana, Geneva, sans-serif;"+
	    						"font-size: 13px;"+
	    					"}"+
	    					"</style>"+
	    					"<body>"+
	    					"<table width='100%' border='0'>"+
	    					  "<tr>"+
	    					  "<td width='91%'><p class='fuente'>"+ STR_MSG +"</p>"+
	    					  "<p>&nbsp;</p></td>"+
	    					  "</tr>"+
	    					  "<tr>"+
	    					  "<td class='fuente'>Atentamente,</td>"+
	    					  "</tr>"+
	    					  "<tr>"+
	    					  "<td><strong class='titulo'>"+USUARIO.getDescripcion()+"</strong></td>"+
	    					  "</tr>"+
	    					  "<tr>"+
	    					  "<td class='fuente'>"+USUARIO.getCargo()+"</td>"+
	    					  "</tr>"+
	    					  "<tr>"+
	    					  "<td class='fuente'>Av. Los Cedros, Edif. Movilmax, La Florida.</td>"+
	    					  "</tr>"+
	    					  "<tr>"+
	    					   " <td class='fuente'>Caracas, Venezuela</td>"+
	    					  "</tr>"+
	    					  "<tr>"+
	    					   " <td class='fuente'>Tel:+58 "+USUARIO.getTelefono() +"</td>"+
	    					  "</tr>"+
	    					  "<tr>"+
	    					   " <td class='fuente'>Cel: "+USUARIO.getCelular()+"</td>"+
	    					  "</tr>"+
	    					  "<tr>"+
	    					   " <td class='fuente'><span lang='EN-US' xml:lang='EN-US'>Email: </span><u><span lang='EN-US' xml:lang='EN-US'>"+USUARIO.getEmail()+"</span></u></td>"+
	    					  "</tr>"+
	    					  "<tr>"+
	    					   " <td><a href='http://www.movilmax.com' target='_blank'><img src='http://www.movilmax.com/images/image001.jpg' alt='Movilmax' width='212' height='43' border='0' longdesc='http://www.movilmax.com/' /></a><img src='http://www.movilmax.com/images/logo_sociales.jpg' width='61' height='30' border='0' usemap='#Map'  /></td>"+
	    					  "</tr>"+
	    					"</table>"+
	    					"<map name='Map' id='Map'>"+
	    					  "<area shape='rect' coords='1,2,29,29' href='http://twitter.com/movilmax' target='_blank' alt='Siguenos' />"+
	    					  "<area shape='rect' coords='31,3,63,31' href='http://www.facebook.com/group.php?gid=230488475608' target='_blank' alt='Encuntranos' />"+
	    					"</map>";
	    			  if(!C.enviarCorreo(USUARIO.getEmail(),this.getDestinatario(),"MOVILMAX ( PROPUESTA SERVICIO CORPORATIVO )",mensaje,adjuntos,"html") ){
		    				addActionError("Error al intentar enviar el email "  );
		  		    	    return ERROR;
	    			   }else{
	    				  C.enviarCorreo(USUARIO.getEmail(),"dick@movilmax.com,"+USUARIO.getEmail(),"COPIA - ( PROPUESTA SERVICIO CORPORATIVO )",mensaje,adjuntos,"html");
	    			   }
  		    	    SQL="INSERT INTO corp_seguimiento_actividades " +
  		    			"(prospecto,actividad,detalle,obs,usuario,fecha,hora,stx) "+
  		    			"VALUES('"+this.getCod_prospecto()+"','6','2','"+ this.getObs() +"','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"','ENVIADO' )";
  		    	    BASE.getBaseDatos().ejecutar(SQL); 
  		    	    BASE.getBaseDatos().cerrarConexion();
  		    	    this.addActionMessage("Propuesta enviada correctamente a: "+this.getDestinatario() +", actividad registrada  ("+FECHA+" "+HORA+" ) ");
  		    	 return SUCCESS; 	
	    	  }catch(Exception err ){
				    this.addActionError("Error: "+err.getMessage().toString());
			  }  
		   }
		   else
			  this.addActionError("No hay conexion al servidor");  
	   } 
	  else
		  this.addActionError("La sesion del usuario ha caducado");   	
	
	   return ERROR;
    } 

	
	@SuppressWarnings("rawtypes")
	public String agregarPropuesta(){
		  String SQL="";
		  Map session = ActionContext.getContext().getSession();
		  Usuario USUARIO = (Usuario)session.get("ses_usuario");
		  if (USUARIO!=null){	
			  BASE= new Conectar();
			  if(BASE.getMsg().equals("SI")){		  
					  SQL="Select top 1 A.codigo,A.propuesta,CONVERT(varchar(30),A.fecha,103)+' '+A.hora as fecha_stx,A.obs "+
					  "from corp_propuesta A "+
					  "Where A.prospecto='"+ this.getCod_prospecto() +"' ";
						 Resultado RCS=BASE.getBaseDatos().consultar(SQL);
						 if(RCS.RP){
							    this.setCod_propuesta(RCS.getCadena("codigo") ) ;
								this.setFecha(RCS.getCadena("fecha_stx"));
								this.setObs_status(RCS.getCadena("obs"));
								this.setStatus("ENVIADO");	
								File dir = new File("/home/tomcat/public/propuestas/"+this.getCod_prospecto());
				                dir.mkdirs();
				                String rutax= "/propuestas/"+this.getCod_prospecto()+"/propuesta("+this.getCod_propuesta()+").pdf";
								if ( !BASE.getBaseDatos().cargarArchivo(System.getProperty("user.dir")+rutax,RCS.getBlob("propuesta") ) ){
									this.setEnlace_pro("NO");
								}else{
									this.setEnlace_pro("http://200.26.160.18:8284/public"+rutax);
									//this.setEnlace_pro("http://localhost:8284/sia"+rutax);
								}
								//this.addActionMessage(System.getProperty("user.dir")+rutax);
								//this.addActionMessage(this.getEnlace_pro());
						 }else{
							    this.setCod_propuesta("-1");
							    this.setEnlace_pro("NO");
							    this.setFecha(new Fecha().getFecha()+" "+new Fecha().getHoras()  );
								this.setObs_status("NINGUNA");
								this.setStatus("SIN REGISTRAR");		 
						 }
						 BASE.getBaseDatos().cerrarConexion(); 
					return SUCCESS;	 
			    }
			  else
				 this.addActionError("No hay conexion al servidor");  
		 } 
		else
		  this.addActionError("La sesion del usuario ha caducado");   		  
		return ERROR;    
	}
	public String getObs() {
		return obs;
	}
	public void setObs(String obs) {
		this.obs = obs;
	}
	public String getCod_prospecto() {
		return cod_prospecto;
	}
	public void setCod_prospecto(String cod_prospecto) {
		this.cod_prospecto = cod_prospecto;
	}
	public String getDestinatario() {
		return destinatario;
	}
	public void setDestinatario(String destinatario) {
		this.destinatario = destinatario;
	}
	public String getMensaje() {
		return mensaje;
	}
	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}
	public String getCod_propuesta() {
		return cod_propuesta;
	}
	public void setCod_propuesta(String cod_propuesta) {
		this.cod_propuesta = cod_propuesta;
	}
	public File getArchivo() {
		return archivo;
	}
	public void setArchivo(File archivo) {
		this.archivo = archivo;
	}
	public String getArchivoContentType() {
		return archivoContentType;
	}
	public void setArchivoContentType(String archivoContentType) {
		this.archivoContentType = archivoContentType;
	}
	public String getArchivoFileName() {
		return archivoFileName;
	}
	public void setArchivoFileName(String archivoFileName) {
		this.archivoFileName = archivoFileName;
	}
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	public String getFecha() {
		return fecha;
	}
	public void setFecha(String fecha) {
		this.fecha = fecha;
	}
	public String getObs_status() {
		return obs_status;
	}
	public void setObs_status(String obs_status) {
		this.obs_status = obs_status;
	}
	public String getEnlace_pro() {
		return enlace_pro;
	}
	public void setEnlace_pro(String enlace_pro) {
		this.enlace_pro = enlace_pro;
	} 
	
}
